tests: add clipboard set_with_data test
authorMarc-André Lureau <marcandre.lureau@gmail.com>
Fri, 16 May 2014 18:42:28 +0000 (20:42 +0200)
committerMarc-André Lureau <marcandre.lureau@gmail.com>
Thu, 22 May 2014 10:44:10 +0000 (12:44 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=730183

testsuite/gtk/clipboard.c

index 83f1667768d8a94d4b472aa8fce7d9441b73ba55..e665ff7bfb557840869c75ea71334e049a4bfae5 100644 (file)
@@ -20,6 +20,7 @@
 #include <string.h>
 
 #define SOME_TEXT "Hello World"
+#define TARGET_TEXT "UTF8_STRING"
 
 static void
 test_text (void)
@@ -38,6 +39,42 @@ test_text (void)
   g_free (text);
 }
 
+static void
+test_with_data_get (GtkClipboard *clipboard,
+                    GtkSelectionData *selection_data,
+                    guint info,
+                    gpointer user_data_or_owner)
+{
+    gboolean success;
+
+    g_assert_cmpuint (info, ==, 42);
+
+    success = gtk_selection_data_set_text (selection_data, SOME_TEXT, -1);
+    g_assert (success);
+}
+
+static void
+test_with_data_got (GtkClipboard *clipboard,
+                    GtkSelectionData *selection_data,
+                    gpointer data)
+{
+    guchar *text;
+
+    text = gtk_selection_data_get_text (selection_data);
+    g_assert_cmpstr ((char*)text, ==, SOME_TEXT);
+    g_free (text);
+}
+
+static void
+test_with_data (void)
+{
+    GtkClipboard *clipboard = gtk_clipboard_get_for_display (gdk_display_get_default (), GDK_SELECTION_CLIPBOARD);
+    GtkTargetEntry entries[] = { { .target = TARGET_TEXT, .info = 42 } };
+
+    gtk_clipboard_set_with_data (clipboard, entries, G_N_ELEMENTS(entries), test_with_data_get, NULL, NULL);
+    gtk_clipboard_request_contents (clipboard, gdk_atom_intern (TARGET_TEXT, FALSE), test_with_data_got, NULL);
+}
+
 int
 main (int   argc,
       char *argv[])
@@ -45,6 +82,7 @@ main (int   argc,
   gtk_test_init (&argc, &argv);
 
   g_test_add_func ("/clipboard/test_text", test_text);
+  g_test_add_func ("/clipboard/test_with_data", test_with_data);
 
   return g_test_run();
 }